## Game installation and updating

Pick an application from the list below that suits your preferences.
Each of them is capable of installing and updating the game. Additional features
such as automated patching might or might not be included.

 * The official launcher
     * Note: Wine 8.7 or newer should be used to avoid a memory leak in `winedevice.exe`
     * See [INSTALLATION.md](../INSTALLATION.md) for further instructions.
 * [Paimon Launcher](https://notabug.org/loentar/paimon-launcher)
 * [An Anime Game Launcher](https://github.com/an-anime-team/an-anime-game-launcher)
 * [Yet another anime game launcher](https://github.com/3Shain/yet-another-anime-game-launcher) (macOS)
 * `update_gi.sh` (CLI only, described below)


## Updater implementation in Bash

This section documents the script `update_gi.sh`. The other scripts located in
this directory have a short explanation in their file content.

The following steps are automated:

1. Check for game updates
2. Download the game files
3. Revert any previously applied patches
4. Install or update the game files
5. Apply the newest patch


### Requirements

This script requires following applications:

 * `bash` (update and patch script)
 * `jq` (JSON parsing)
 * Either `aria2c`, `wget`, `curl` or `axel` (file download)
 * `xdelta3` (patch script)


### Usage instructions

The current working directory (`pwd`) specifies the update or installation path.

Example + syntax:

	cd "/path/to/game/directory/"
	bash "/path/to/dawn/updater/update_gi.sh" [OPTIONS ...]

List of OPTIONS:

 * `--help`: Shows a short help text
 * `install`: Switches from the "update" to "installation" mode
     * By default, an update will be performed in the current directory
 * `nodelete`: Keeps the downloaded archives after the installation or update.
 * `predownload`: Checks and downloads pre-download-game archives
     * To perform the update afterwards, re-run the update script without the `predownload` option.

If errors occur after updating the game files, [re-run the patch scripts manually](../#applying-the-workaround).


#### New installation

Use the `install` command line option to install the newest game version to
an **empty** directory.

Example:

	# Create a new directory in HOME (~) for the installation
	mkdir -p "$HOME/Genshin Impact Game"
	cd "$HOME/Genshin Impact Game/"

	bash "/path/to/dawn/updater/update_gi.sh" install


#### Game update

Updates the game in the working directory to the newest version.

**Important:** If the official launcher was used for the installation, ensure that the
current working directory (`pwd`) contains `GenshinImpact.exe` but not `launcher.exe`.

Example:

	# Update game located in HOME
	cd "$HOME/Genshin Impact Game/"
	bash "/path/to/dawn/updater/update_gi.sh"

For advanced users: `perform_update.sh` can be used to manually apply downloaded archives
